package com.yifeng.servlet;

import com.yifeng.common.Result;
import com.yifeng.factory.ServiceFactory;
import com.yifeng.service.NewsService;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/*
负责人：xiaoq

功能：前台新闻首页数据接口，提供媒体报道、项目新闻和含图片新闻的公开访问接口

参数：无

返回值：无
*/
/**
 * 负责人：xiaoq
 *
 * 功能：前台新闻首页数据接口，提供两个 GET 接口：
 *       1. /news/home/media-project → 返回媒体报道和项目新闻
 *       2. /news/home/with-images   → 返回含图片的新闻
 *       所有接口均为公开访问，无需登录。
 */
@WebServlet("/news/home/*")
public class NewsHomeServlet extends BaseServlet {

    /*
    负责人：xiaoq

    功能：新闻业务逻辑服务实例，用于处理新闻相关的业务操作

    参数：无

    返回值：无
    */
    private final NewsService newsService = ServiceFactory.getNewsService();

    /*
    负责人：未知

    功能：处理HTTP请求的核心方法，根据路径分发到不同的新闻查询功能

    参数：req - HTTP请求对象, resp - HTTP响应对象

    返回值：无
    */
    @Override
    protected void doHandle(HttpServletRequest req, HttpServletResponse resp) throws IOException {
            //获取接口字符串
            String pathInfo = req.getPathInfo();


             //判断
            if(pathInfo==null || pathInfo.equals("/")){
                fail(resp,"请求路径不为空");
                return;
            }


            // 接口一：媒体报道 + 项目新闻

            // 接口二：含图片的新闻
            switch (pathInfo) {
                case "/media-project":
                    //获取媒体报道信息
                    getMediaAndProjectNews(resp);
                    break;
                case "/with-images":
                    //获取包含图片新闻
                    getNewsWithImages(resp);
                    break;
                default:
                    fail(resp, "不支持该路径" + pathInfo);
                    break;

        }
    }

    /**
     * 获取媒体报道和项目新闻
     * */

    private void getMediaAndProjectNews(HttpServletResponse resp) throws IOException {
        try {
            Result result = newsService.getMediaAndProjectNews();
            //返回结果json数据
            writeJson(resp,result);
        } catch (Exception e) {
            fail(resp,"获取新闻报道和项目新闻失败:"+e.getMessage());
        }

    }

    /**
     * 获取包含图片新闻
     * */

    private void getNewsWithImages(HttpServletResponse resp) throws IOException {
        try {
            Result result = newsService.getNewsWithImages();
            //返回结果json数据
            writeJson(resp,result);
        } catch (Exception e) {
            fail(resp,"获取含图片新闻失败:"+e.getMessage());
        }
    }




}